/**
******************************************************************************
* @file    usbd_desc.h
* @author  MCD Application Team
* @version V1.1.0
* @date    19-March-2012
* @brief   header file for the usbd_desc.c file
******************************************************************************
* @attention
*
* <h2><center>&copy; COPYRIGHT 2012 STMicroelectronics</center></h2>
*
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
*        http://www.st.com/software_license_agreement_liberty_v2
*
* Unless required by applicable law or agreed to in writing, software 
* distributed under the License is distributed on an "AS IS" BASIS, 
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************
*/ 

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __USB_DESC_H
#define __USB_DESC_H


/* Includes ------------------------------------------------------------------*/
#include "usbd_def.h"


#define USB_DEVICE_DESCRIPTOR_TYPE			0x01
#define USB_CONFIGURATION_DESCRIPTOR_TYPE	0x02
#define USB_STRING_DESCRIPTOR_TYPE			0x03
#define USB_INTERFACE_DESCRIPTOR_TYPE		0x04
#define USB_ENDPOINT_DESCRIPTOR_TYPE		0x05
#define USB_SIZ_DEVICE_DESC					18
#define USB_SIZ_STRING_LANGID				4

#define	USB_INTERFACE_STRING_INPUT			(USBD_IDX_INTERFACE_STR + 0x01)
#define	USB_INTERFACE_STRING_HID			(USBD_IDX_INTERFACE_STR + 0x02)


extern uint8_t USBD_DeviceDesc[USB_SIZ_DEVICE_DESC];
extern uint8_t USBD_StrDesc[USB_MAX_STR_DESC_SIZ];
extern uint8_t USBD_OtherSpeedCfgDesc[USB_LEN_CFG_DESC]; 
extern uint8_t USBD_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC];
extern uint8_t USBD_LangIDDesc[USB_SIZ_STRING_LANGID];
extern USBD_DEVICE USR_desc; 


uint8_t *USBD_USR_DeviceDescriptor(uint8_t speed, uint16_t *length);
uint8_t *USBD_USR_LangIDStrDescriptor(uint8_t speed, uint16_t *length);
uint8_t *USBD_USR_ManufacturerStrDescriptor (uint8_t speed, uint16_t *length);
uint8_t *USBD_USR_ProductStrDescriptor (uint8_t speed, uint16_t *length);
uint8_t *USBD_USR_SerialStrDescriptor(uint8_t speed, uint16_t *length);
uint8_t *USBD_USR_ConfigStrDescriptor(uint8_t speed, uint16_t *length);
uint8_t *USBD_USR_InterfaceStrDescriptor(uint8_t speed, uint16_t *length);
#ifdef USB_SUPPORT_USER_STRING_DESC
uint8_t *USBD_USR_USRStringDesc(uint8_t speed, uint8_t idx, uint16_t *length);
#endif /* USB_SUPPORT_USER_STRING_DESC */


#endif /* __USBD_DESC_H */

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
